home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_02_07 / 2n07063a < prev    next >
Text File  |  1991-06-01  |  6KB  |  160 lines

  1. #define OK     1
  2. #define FAIL   0
  3. #define bool   short
  4.  
  5. /* ESP Registers:  */
  6. #define ESP_REG_READY              0
  7. #define ESP_REG_SID                1
  8. #define ESP_REG_RX1                2
  9. #define ESP_REG_TX1                3
  10. #define ESP_REG_RX2                4
  11. #define ESP_REG_TX2                5
  12. #define ESP_REG_STATUS1            6
  13. #define ESP_REG_CMD1               7
  14. #define ESP_REG_STATUS2            8
  15. #define ESP_REG_CMD2               9
  16. #define ESP_DMA_RX                10
  17. #define ESP_DMA_TX                11
  18.  
  19.  
  20. /* ESP Registers Offsets  */
  21. #define ESP_REG_READY_OFFS      0x00
  22. #define ESP_REG_SID_OFFS        0x01
  23. #define ESP_REG_RX1_OFFS        0x02
  24. #define ESP_REG_TX1_OFFS        0x02
  25. #define ESP_REG_RX2_OFFS        0x03
  26. #define ESP_REG_TX2_OFFS        0x03
  27. #define ESP_REG_STATUS1_OFFS    0x04
  28. #define ESP_REG_CMD1_OFFS       0x04
  29. #define ESP_REG_STATUS2_OFFS    0x05
  30. #define ESP_REG_CMD2_OFFS       0x05
  31. #define ESP_DMA_RX_OFFS         0x06
  32. #define ESP_DMA_TX_OFFS         0x06
  33.  
  34. /* Bit flags for ESP Registers ESP_REG_READY */
  35.  
  36. #define ESP_REG_RX1_RDY         0x01
  37. #define ESP_REG_TX1_RDY         0x02
  38. #define ESP_REG_RX2_RDY         0x04
  39. #define ESP_REG_TX2_RDY         0x08
  40. #define ESP_REG_STATUS1_RDY     0x10
  41. #define ESP_REG_CMD1_RDY        0x20
  42. #define ESP_REG_STATUS2_RDY     0x40
  43. #define ESP_REG_CMD2_RDY        0x80
  44.  
  45.  
  46. typedef struct esp_reg {
  47.    short reg_offset;    /* Offset of register from base address */
  48.    short ready_flag;    /* Mask for ready status checking       */
  49.    } ESP_Reg;
  50.  
  51.  
  52. /* ESP Command Codes:    */
  53.  
  54. #define ESP_CMD_RESET                  0x00  /*   General Commands   */
  55. #define ESP_CMD_GET_SELF_TEST_RES      0x01
  56. #define ESP_CMD_GET_COMPAT_DIPS        0x02
  57. #define ESP_CMD_DOWNLOAD_CODE          0x03
  58.  
  59. #define ESP_CMD_SET_INTR_AND_DMA       0x04  /*   Setup Commands     */
  60. #define ESP_CMD_SET_DMA_TIMEOUT        0x05
  61. #define ESP_CMD_SET_SERVICE_MASK       0x06
  62. #define ESP_CMD_SET_ERROR_MASK         0x07
  63. #define ESP_CMD_SET_FLOW_CTRL_TYPE     0x08
  64. #define ESP_CMD_SET_FLOW_CTRL_CHAR     0x09
  65. #define ESP_CMD_SET_RX_FIFO_LEVEL      0x0A
  66. #define ESP_CMD_SET_FIFO_TRIGGER       0x0B
  67. #define ESP_CMD_SET_RCV_CHAR_TMO       0x0C
  68. #define ESP_CMD_SET_FLOW_OFF_TMO       0x0D
  69. #define ESP_CMD_WRITE_TO_UART          0x0E
  70. #define ESP_CMD_READ_FROM_UART         0x0F
  71. #define ESP_CMD_SET_BAUD_RATE          0x1D
  72. #define ESP_CMD_GET_MODE               0x1E
  73. #define ESP_CMD_SET_MODE               0x10
  74.  
  75. #define ESP_CMD_CLEAR_DMA_SERV_RQ      0x11 /*  Operating Commands  */
  76. #define ESP_CMD_GET_ERROR_STATUS       0x12
  77. #define ESP_CMD_GET_UART_STATUS        0x13
  78. #define ESP_CMD_GET_RX_BYTES_AVAIL     0x14
  79. #define ESP_CMD_GET_TX_BYTES_AVAIL     0x15
  80. #define ESP_CMD_INIT_DMA_RECEIVE       0x16
  81. #define ESP_CMD_INIT_DMA_TRANSMIT      0x17
  82. #define ESP_CMD_FLOW_OFF_LOC_XMIT      0x18
  83. #define ESP_CMD_FLOW_ON_LOC_XMIT       0x19
  84. #define ESP_CMD_ISSUE_LINE_BREAK       0x1A
  85. #define ESP_CMD_FLUSH_RX_FIFO          0x1B
  86. #define ESP_CMD_FLUSH_TX_FIFO          0x1C
  87.  
  88.  
  89. /* ESP port qualifier OR'ed with CMD code: */
  90.  
  91. #define ESP_PORT1                      0x00
  92. #define ESP_PORT2                      0x80
  93.  
  94. #define ESP_MAX_ENH_BAUD             57600L
  95. #define ESP_MAX_COMP_BAUD           115200L
  96.  
  97. /* Bit flags for ESP_CMD_GET_SELF_TEST_RES */
  98. #define ESP_TEST_RAM_FAIL              0x01
  99. #define ESP_TEST_ROM_FAIL              0x02
  100. #define ESP_TEST_8K_ROM                0x04
  101. #define ESP_TEST_MCA_BUS               0x08
  102. #define ESP_TEST_2_PORT                0x10
  103.  
  104. /* Bit flags for ESP_CMD_SET_INTR_AND_DMA */
  105. /* choose one from each group below:  */
  106. #define ESP_SET_ENH_INTR_ON            0x01
  107.  
  108. #define ESP_SET_ENH_IRQ9               0x00
  109. #define ESP_SET_ENH_IRQ3               0x02
  110. #define ESP_SET_ENH_IRQ4               0x04
  111. #define ESP_SET_ENH_IRQ5               0x06
  112.  
  113. #define ESP_SET_DMA_OFF                0x00
  114. #define ESP_SET_DMA1                   0x10
  115. #define ESP_SET_DMA3                   0x30
  116.  
  117. /* Bit flags for ESP_CMD_SET_SERVICE_MASK */
  118. #define ESP_SERV_PORT1_RX_FIFO         0x01
  119. #define ESP_SERV_PORT1_TX_FIFO         0x02
  120. #define ESP_SERV_PORT1_ERROR           0x04
  121. #define ESP_SERV_DMA_TERMINATE         0x08
  122. #define ESP_SERV_PORT2_RX_FIFO         0x10
  123. #define ESP_SERV_PORT2_TX_FIFO         0x20
  124. #define ESP_SERV_PORT2_ERROR           0x40
  125. #define ESP_SERV_DMA_TIMEOUT           0x80
  126.  
  127. /* Bit flags for ESP_CMD_SET_ERROR_MASK: Byte 1 */
  128. #define ESP_ERR_RCV_CHAR_TMO           0x01
  129. #define ESP_ERR_RCV_FIFO_OVERFLOW      0x02
  130. #define ESP_ERR_PARITY_ERROR           0x04
  131. #define ESP_ERR_FRAMING_ERROR          0x08
  132. #define ESP_ERR_BREAK_DETECT           0x10
  133. #define ESP_ERR_UART_STATUS            0x20
  134. #define ESP_ERR_FLOWED_OFF_TMO         0x40
  135. #define ESP_ERR_BREAK_XMIT_DONE        0x80
  136. #define ESP_ERR_ALL_BYTE_1             0xFF
  137.  
  138. /* Bit flags for ESP_CMD_SET_ERROR_MASK: Byte 2 */
  139. #define ESP_ERR_REMOTE_TX_F_OFF        0x01
  140. #define ESP_ERR_LOCAL_TX_F_OFF         0x02
  141. #define ESP_ERR_LOCAL_TX_F_ON          0x04
  142. #define ESP_ERR_ALL_BYTE_2             0x07
  143.  
  144. /* Bit flags for ESP_CMD_GET/SET_MODE */
  145. #define ESP_MODE_ENHANCED              0x01
  146. #define ESP_MODE_COMP_UART_FIFO        0x02
  147. #define ESP_MODE_COMP_RTS_FLOW         0x04
  148. #define ESP_MODE_COMP_DTR_FLOW         0x08
  149. #define ESP_MODE_ENH_RX_DMA            0x10
  150. #define ESP_MODE_ENH_TX_DMA            0x20
  151.  
  152. typedef struct esp_handle {
  153.    short base_addr;  /* Base address of ESP registers */
  154.    short uart_addr;  /* Base address of NS16550 UART  */
  155.    short dma;        /* DMA channel number 0-9        */
  156.    short irq;        /* IRQ level                     */
  157.    short esp_no;     /* Which ESP board               */
  158.    short port;       /* Which port on the ESP board   */
  159.    } ESP_Handle;
  160.